Skip to content
Snippets Groups Projects
Commit 3e4e9a61 authored by Janne Mareike Koschinski's avatar Janne Mareike Koschinski
Browse files

Finish autocomplete implementation

parent 358fe9b8
No related branches found
No related tags found
No related merge requests found
...@@ -3,116 +3,19 @@ package de.kuschku.quasseldroid.dagger ...@@ -3,116 +3,19 @@ package de.kuschku.quasseldroid.dagger
import android.content.Context import android.content.Context
import dagger.Module import dagger.Module
import dagger.Provides import dagger.Provides
import de.kuschku.quasseldroid.R import de.kuschku.quasseldroid.settings.Settings
import de.kuschku.quasseldroid.settings.AppearanceSettings
import de.kuschku.quasseldroid.settings.AutoCompleteSettings
import de.kuschku.quasseldroid.settings.BacklogSettings
import de.kuschku.quasseldroid.settings.ConnectionSettings
import de.kuschku.quasseldroid.util.helper.sharedPreferences
@Module @Module
class SettingsModule { class SettingsModule {
@Provides @Provides
fun provideAppearanceSettings(context: Context) = context.sharedPreferences { fun provideAppearanceSettings(context: Context) = Settings.appearance(context)
AppearanceSettings(
theme = AppearanceSettings.Theme.of(
getString(
context.getString(R.string.preference_theme_key),
""
)
) ?: AppearanceSettings.DEFAULT.theme,
useMonospace = getBoolean(
context.getString(R.string.preference_monospace_key),
AppearanceSettings.DEFAULT.useMonospace
),
textSize = getInt(
context.getString(R.string.preference_textsize_key),
AppearanceSettings.DEFAULT.textSize
),
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
),
showPrefix = AppearanceSettings.ShowPrefixMode.of(
getString(
context.getString(R.string.preference_show_prefix_key),
""
)
) ?: AppearanceSettings.DEFAULT.showPrefix,
colorizeNicknames = AppearanceSettings.ColorizeNicknamesMode.of(
getString(
context.getString(R.string.preference_colorize_nicknames_key),
""
)
) ?: AppearanceSettings.DEFAULT.colorizeNicknames,
inputEnter = AppearanceSettings.InputEnterMode.of(
getString(
context.getString(R.string.preference_input_enter_key),
""
)
) ?: AppearanceSettings.DEFAULT.inputEnter,
colorizeMirc = getBoolean(
context.getString(R.string.preference_colorize_mirc_key),
AppearanceSettings.DEFAULT.colorizeMirc
),
showHostmask = getBoolean(
context.getString(R.string.preference_hostmask_key),
AppearanceSettings.DEFAULT.showHostmask
),
showLag = getBoolean(
context.getString(R.string.preference_show_lag_key),
AppearanceSettings.DEFAULT.showLag
)
)
}
@Provides @Provides
fun provideAutoCompleteSettings(context: Context) = context.sharedPreferences { fun provideAutoCompleteSettings(context: Context) = Settings.autoComplete(context)
AutoCompleteSettings(
button = getBoolean(
context.getString(R.string.preference_autocomplete_button_key),
AutoCompleteSettings.DEFAULT.button
),
doubleTap = getBoolean(
context.getString(R.string.preference_autocomplete_doubletap_key),
AutoCompleteSettings.DEFAULT.button
),
auto = getBoolean(
context.getString(R.string.preference_autocomplete_auto_key),
AutoCompleteSettings.DEFAULT.button
),
prefix = getBoolean(
context.getString(R.string.preference_autocomplete_prefix_key),
AutoCompleteSettings.DEFAULT.button
)
)
}
@Provides @Provides
fun provideBacklogSettings(context: Context) = context.sharedPreferences { fun provideBacklogSettings(context: Context) = Settings.backlog(context)
BacklogSettings(
pageSize = getString(
context.getString(R.string.preference_page_size_key),
BacklogSettings.DEFAULT.pageSize.toString()
).toIntOrNull() ?: BacklogSettings.DEFAULT.pageSize,
initialAmount = getString(
context.getString(R.string.preference_initial_amount_key),
BacklogSettings.DEFAULT.initialAmount.toString()
).toIntOrNull() ?: BacklogSettings.DEFAULT.initialAmount
)
}
@Provides @Provides
fun provideConnectionSettings(context: Context) = context.sharedPreferences { fun provideConnectionSettings(context: Context) = Settings.connection(context)
ConnectionSettings(
showNotification = getBoolean(
context.getString(R.string.preference_show_notification_key),
ConnectionSettings.DEFAULT.showNotification
)
)
}
} }
\ No newline at end of file
...@@ -63,6 +63,27 @@ object Settings { ...@@ -63,6 +63,27 @@ object Settings {
) )
} }
fun autoComplete(context: Context) = context.sharedPreferences {
AutoCompleteSettings(
button = getBoolean(
context.getString(R.string.preference_autocomplete_button_key),
AutoCompleteSettings.DEFAULT.button
),
doubleTap = getBoolean(
context.getString(R.string.preference_autocomplete_doubletap_key),
AutoCompleteSettings.DEFAULT.button
),
auto = getBoolean(
context.getString(R.string.preference_autocomplete_auto_key),
AutoCompleteSettings.DEFAULT.button
),
prefix = getBoolean(
context.getString(R.string.preference_autocomplete_prefix_key),
AutoCompleteSettings.DEFAULT.button
)
)
}
fun backlog(context: Context) = context.sharedPreferences { fun backlog(context: Context) = context.sharedPreferences {
BacklogSettings( BacklogSettings(
pageSize = getString( pageSize = getString(
......
...@@ -35,6 +35,7 @@ import de.kuschku.libquassel.util.or ...@@ -35,6 +35,7 @@ import de.kuschku.libquassel.util.or
import de.kuschku.quasseldroid.Keys import de.kuschku.quasseldroid.Keys
import de.kuschku.quasseldroid.R import de.kuschku.quasseldroid.R
import de.kuschku.quasseldroid.persistence.QuasselDatabase import de.kuschku.quasseldroid.persistence.QuasselDatabase
import de.kuschku.quasseldroid.settings.Settings
import de.kuschku.quasseldroid.ui.chat.input.Editor import de.kuschku.quasseldroid.ui.chat.input.Editor
import de.kuschku.quasseldroid.ui.chat.input.MessageHistoryAdapter import de.kuschku.quasseldroid.ui.chat.input.MessageHistoryAdapter
import de.kuschku.quasseldroid.ui.settings.app.AppSettingsActivity import de.kuschku.quasseldroid.ui.settings.app.AppSettingsActivity
...@@ -111,6 +112,7 @@ class ChatActivity : ServiceBoundActivity(), SharedPreferences.OnSharedPreferenc ...@@ -111,6 +112,7 @@ class ChatActivity : ServiceBoundActivity(), SharedPreferences.OnSharedPreferenc
viewModel.lastWord, viewModel.lastWord,
findViewById(R.id.chatline), findViewById(R.id.chatline),
findViewById(R.id.send), findViewById(R.id.send),
findViewById(R.id.tab_complete),
listOf( listOf(
findViewById(R.id.autocomplete_list), findViewById(R.id.autocomplete_list),
findViewById(R.id.autocomplete_list_expanded) findViewById(R.id.autocomplete_list_expanded)
...@@ -255,6 +257,13 @@ class ChatActivity : ServiceBoundActivity(), SharedPreferences.OnSharedPreferenc ...@@ -255,6 +257,13 @@ class ChatActivity : ServiceBoundActivity(), SharedPreferences.OnSharedPreferenc
editorPanel.panelState = SlidingUpPanelLayout.PanelState.COLLAPSED editorPanel.panelState = SlidingUpPanelLayout.PanelState.COLLAPSED
} }
override fun onStart() {
if (Settings.autoComplete(this) != autoCompleteSettings) {
recreate()
}
super.onStart()
}
data class AutoCompletionState( data class AutoCompletionState(
val originalWord: String, val originalWord: String,
val range: IntRange, val range: IntRange,
......
...@@ -19,6 +19,7 @@ import de.kuschku.quasseldroid.ui.chat.ChatActivity ...@@ -19,6 +19,7 @@ import de.kuschku.quasseldroid.ui.chat.ChatActivity
import de.kuschku.quasseldroid.util.helper.lastWordIndices import de.kuschku.quasseldroid.util.helper.lastWordIndices
import de.kuschku.quasseldroid.util.helper.lineSequence import de.kuschku.quasseldroid.util.helper.lineSequence
import de.kuschku.quasseldroid.util.helper.retint import de.kuschku.quasseldroid.util.helper.retint
import de.kuschku.quasseldroid.util.helper.visibleIf
import de.kuschku.quasseldroid.viewmodel.data.AutoCompleteItem import de.kuschku.quasseldroid.viewmodel.data.AutoCompleteItem
import io.reactivex.Observable import io.reactivex.Observable
import io.reactivex.subjects.BehaviorSubject import io.reactivex.subjects.BehaviorSubject
...@@ -32,6 +33,7 @@ class Editor( ...@@ -32,6 +33,7 @@ class Editor(
// Views // Views
val chatline: AppCompatEditText, val chatline: AppCompatEditText,
send: AppCompatImageButton, send: AppCompatImageButton,
tabComplete: AppCompatImageButton,
autoCompleteLists: List<RecyclerView>, autoCompleteLists: List<RecyclerView>,
formattingMenu: ActionMenuView, formattingMenu: ActionMenuView,
formattingToolbar: Toolbar, formattingToolbar: Toolbar,
...@@ -158,6 +160,11 @@ class Editor( ...@@ -158,6 +160,11 @@ class Editor(
} }
} }
tabComplete.visibleIf(autoCompleteSettings.button)
tabComplete.setOnClickListener {
autoComplete()
}
lastWordContainer.onNext(lastWord) lastWordContainer.onNext(lastWord)
activity.menuInflater.inflate(formatHandler.menu, formattingMenu.menu) activity.menuInflater.inflate(formatHandler.menu, formattingMenu.menu)
......
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportHeight="24"
android:viewportWidth="24">
<path
android:fillColor="#000"
android:pathData="M20,18H22V6H20M11.59,7.41L15.17,11H1V13H15.17L11.59,16.58L13,18L19,12L13,6L11.59,7.41Z" />
</vector>
\ No newline at end of file
...@@ -4,6 +4,19 @@ ...@@ -4,6 +4,19 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent"> android:layout_height="match_parent">
<android.support.v7.widget.AppCompatImageButton
android:id="@+id/tab_complete"
style="?attr/buttonStyleSmall"
android:layout_width="?attr/actionBarSize"
android:layout_height="?attr/actionBarSize"
android:layout_gravity="top"
android:background="?attr/selectableItemBackgroundBorderless"
android:padding="12dp"
android:scaleType="fitXY"
app:tint="?attr/colorTextSecondary"
app:layout_constraintStart_toStartOf="parent"
app:srcCompat="@drawable/ic_tab" />
<ScrollView <ScrollView
android:id="@+id/chatline_scroller" android:id="@+id/chatline_scroller"
android:layout_width="0dp" android:layout_width="0dp"
...@@ -11,7 +24,7 @@ ...@@ -11,7 +24,7 @@
app:layout_constraintBottom_toTopOf="@+id/autocomplete_list_expanded" app:layout_constraintBottom_toTopOf="@+id/autocomplete_list_expanded"
app:layout_constraintEnd_toStartOf="@+id/send" app:layout_constraintEnd_toStartOf="@+id/send"
app:layout_constraintHorizontal_bias="1.0" app:layout_constraintHorizontal_bias="1.0"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toEndOf="@+id/tab_complete"
app:layout_constraintTop_toTopOf="parent"> app:layout_constraintTop_toTopOf="parent">
<android.support.v7.widget.AppCompatEditText <android.support.v7.widget.AppCompatEditText
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment