Skip to content

Commit ae65efe

Browse files
committed
Issue #17: Implement Minimal mode in the UI
1 parent 6697056 commit ae65efe

9 files changed

Lines changed: 76 additions & 27 deletions

File tree

app/src/main/java/com/amrdeveloper/linkhub/ui/components/Folders.kt

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ fun FolderList(
4141
viewKind: FolderViewKind,
4242
onClick: (Folder) -> Unit = {},
4343
onLongClick: (Folder) -> Unit = {},
44+
minimalModeEnabled: Boolean = false,
4445
folderItemPadding: Dp = 4.dp
4546
) {
4647
when (viewKind) {
@@ -51,6 +52,7 @@ fun FolderList(
5152
folder = folder,
5253
onClick = onClick,
5354
onLongClick = onLongClick,
55+
minimalModeEnabled = minimalModeEnabled,
5456
modifier = Modifier
5557
.fillMaxWidth()
5658
.padding(folderItemPadding)
@@ -66,6 +68,7 @@ fun FolderList(
6668
folder = folder,
6769
onClick = onClick,
6870
onLongClick = onLongClick,
71+
minimalModeEnabled = minimalModeEnabled,
6972
modifier = Modifier
7073
.fillMaxWidth()
7174
.padding(folderItemPadding)
@@ -81,6 +84,7 @@ fun FolderItem(
8184
folder: Folder,
8285
onClick: (Folder) -> Unit = {},
8386
onLongClick: (Folder) -> Unit = {},
87+
minimalModeEnabled: Boolean = false,
8488
folderItemElevation: Dp = 4.dp,
8589
folderItemPadding: Dp = 8.dp,
8690
modifier: Modifier = Modifier,
@@ -103,13 +107,15 @@ fun FolderItem(
103107
),
104108
verticalAlignment = Alignment.CenterVertically
105109
) {
106-
Icon(
107-
painter = painterResource(id = folder.folderColor.drawableId),
108-
contentDescription = "Folder Icon",
109-
tint = Color.Unspecified
110-
)
110+
if (minimalModeEnabled.not()) {
111+
Icon(
112+
painter = painterResource(id = folder.folderColor.drawableId),
113+
contentDescription = "Folder Icon",
114+
tint = Color.Unspecified
115+
)
111116

112-
Spacer(modifier = Modifier.width(8.dp))
117+
Spacer(modifier = Modifier.width(8.dp))
118+
}
113119

114120
Text(
115121
folder.name,

app/src/main/java/com/amrdeveloper/linkhub/ui/components/Links.kt

Lines changed: 24 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ fun LinkList(
3636
onClick: (Link) -> Unit = {},
3737
onLongClick: (Link) -> Unit = {},
3838
showClickCount: Boolean = false,
39+
minimalModeEnabled: Boolean = false,
3940
linkItemPadding: Dp = 4.dp
4041
) {
4142
LazyColumn {
@@ -45,6 +46,7 @@ fun LinkList(
4546
onClick = onClick,
4647
onLongClick = onLongClick,
4748
showClickCount = showClickCount,
49+
minimalModeEnabled = minimalModeEnabled,
4850
modifier = Modifier
4951
.fillMaxWidth()
5052
.padding(linkItemPadding)
@@ -58,6 +60,7 @@ fun LinkItem(
5860
link: Link,
5961
onClick: (Link) -> Unit = {},
6062
onLongClick: (Link) -> Unit = {},
63+
minimalModeEnabled: Boolean = false,
6164
showClickCount: Boolean = false,
6265
modifier: Modifier = Modifier
6366
) {
@@ -78,13 +81,15 @@ fun LinkItem(
7881
}
7982
), verticalAlignment = Alignment.CenterVertically
8083
) {
81-
Icon(
82-
painter = painterResource(id = findPlatformDomainIcon(link.url)),
83-
contentDescription = "Link Icon",
84-
tint = Color.Unspecified
85-
)
84+
if (minimalModeEnabled.not()) {
85+
Icon(
86+
painter = painterResource(id = findPlatformDomainIcon(link.url)),
87+
contentDescription = "Link Icon",
88+
tint = Color.Unspecified
89+
)
8690

87-
Spacer(modifier = Modifier.width(8.dp))
91+
Spacer(modifier = Modifier.width(8.dp))
92+
}
8893

8994
Column(
9095
modifier = Modifier
@@ -128,21 +133,24 @@ fun LinkItem(
128133

129134
if (showClickCount) {
130135
Row(verticalAlignment = Alignment.CenterVertically) {
136+
val suffix = if (minimalModeEnabled) "x" else ""
131137
Text(
132-
"${link.clickedCount}",
138+
"${link.clickedCount}${suffix}",
133139
textAlign = TextAlign.Center,
134140
style = MaterialTheme.typography.labelSmall
135141
)
136142

137-
Spacer(modifier = Modifier.width(5.dp))
138-
Icon(
139-
painter = painterResource(id = R.drawable.ic_click),
140-
contentDescription = "Link count",
141-
tint = Color.Unspecified,
142-
modifier = Modifier
143-
.size(20.dp)
144-
.padding(2.dp)
145-
)
143+
if (minimalModeEnabled.not()) {
144+
Spacer(modifier = Modifier.width(5.dp))
145+
Icon(
146+
painter = painterResource(id = R.drawable.ic_click),
147+
contentDescription = "Link count",
148+
tint = Color.Unspecified,
149+
modifier = Modifier
150+
.size(20.dp)
151+
.padding(2.dp)
152+
)
153+
}
146154
}
147155
}
148156
}

app/src/main/java/com/amrdeveloper/linkhub/ui/explorer/ExplorerScreen.kt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,8 @@ fun ExplorerScreen(
8787
R.id.folderFragment,
8888
bundle
8989
)
90-
}
90+
},
91+
minimalModeEnabled = uiPreferences.isMinimalModeEnabled()
9192
)
9293

9394
LinkList(
@@ -104,7 +105,8 @@ fun ExplorerScreen(
104105
bundle
105106
)
106107
},
107-
showClickCount = uiPreferences.isClickCounterEnabled()
108+
showClickCount = uiPreferences.isClickCounterEnabled(),
109+
minimalModeEnabled = uiPreferences.isMinimalModeEnabled()
108110
)
109111

110112
if (showLinkActionsDialog) {

app/src/main/java/com/amrdeveloper/linkhub/ui/folders/FoldersScreen.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,8 @@ fun FoldersScreen(
9393
R.id.folderFragment,
9494
bundle
9595
)
96-
}
96+
},
97+
minimalModeEnabled = uiPreferences.isMinimalModeEnabled()
9798
)
9899
}
99100

app/src/main/java/com/amrdeveloper/linkhub/ui/home/HomeScreen.kt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,8 @@ fun HomeScreen(
7777
onLongClick = { folder ->
7878
val bundle = bundleOf("folder" to folder)
7979
navController.navigate(R.id.folderFragment, bundle)
80-
}
80+
},
81+
minimalModeEnabled = uiPreferences.isMinimalModeEnabled()
8182
)
8283

8384
Row(
@@ -128,7 +129,8 @@ fun HomeScreen(
128129
val bundle = bundleOf("link" to link)
129130
navController.navigate(R.id.linkFragment, bundle)
130131
},
131-
showClickCount = uiPreferences.isClickCounterEnabled()
132+
showClickCount = uiPreferences.isClickCounterEnabled(),
133+
minimalModeEnabled = uiPreferences.isMinimalModeEnabled()
132134
)
133135
}
134136

app/src/main/java/com/amrdeveloper/linkhub/ui/search/SearchScreen.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,7 @@ fun SearchScreen(
153153
bundle
154154
)
155155
},
156+
minimalModeEnabled = uiPreferences.isMinimalModeEnabled(),
156157
modifier = Modifier
157158
.fillMaxWidth()
158159
.padding(4.dp)
@@ -174,6 +175,7 @@ fun SearchScreen(
174175
navController.navigate(R.id.linkFragment, bundle)
175176
},
176177
showClickCount = uiPreferences.isClickCounterEnabled(),
178+
minimalModeEnabled = uiPreferences.isMinimalModeEnabled(),
177179
modifier = Modifier
178180
.fillMaxWidth()
179181
.padding(4.dp)

app/src/main/java/com/amrdeveloper/linkhub/ui/setting/SettingsScreen.kt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,15 @@ fun SettingsScreen(
9696
}
9797
)
9898

99+
SwitchSettingOption(
100+
text = "Minimal mode",
101+
icon = R.drawable.ic_eye,
102+
isChecked = uiPreferences.isMinimalModeEnabled(),
103+
onCheckedChange = { isEnabled ->
104+
uiPreferences.setMinimalModeEnabled(isEnabled)
105+
}
106+
)
107+
99108
DropdownSettingOption(
100109
text = "Font family",
101110
icon = R.drawable.ic_font,

app/src/main/java/com/amrdeveloper/linkhub/util/UiPreferences.kt

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import com.amrdeveloper.linkhub.data.Theme
77
private const val UI_PREFERENCE_NAME = "linkhub_settings"
88
private const val UI_THEME_KEY = "theme"
99
private const val UI_FONT_FAMILY_KEY = "font_family"
10+
private const val UI_MINIMAL_MODE_KEY = "minimal_mode"
1011
private const val UI_COUNTER_KEY = "counter"
1112
private const val UI_AUTO_SAVE_KEY = "auto_save"
1213
private const val UI_DEFAULT_FOLDER_KEY = "default_folder_mode"
@@ -40,6 +41,12 @@ class UiPreferences(private val context: Context) {
4041
}
4142
}
4243

44+
fun setMinimalModeEnabled(enable: Boolean) {
45+
context.getSharedPreferences(UI_PREFERENCE_NAME, Context.MODE_PRIVATE).edit {
46+
putBoolean(UI_MINIMAL_MODE_KEY, enable)
47+
}
48+
}
49+
4350
fun setDefaultFolderId(folderId: Int) {
4451
context.getSharedPreferences(UI_PREFERENCE_NAME, Context.MODE_PRIVATE).edit {
4552
putInt(DEFAULT_FOLDER_NAME, folderId)
@@ -91,6 +98,11 @@ class UiPreferences(private val context: Context) {
9198
return preferences.getBoolean(UI_DEFAULT_FOLDER_KEY, false)
9299
}
93100

101+
fun isMinimalModeEnabled(): Boolean {
102+
val preferences = context.getSharedPreferences(UI_PREFERENCE_NAME, Context.MODE_PRIVATE)
103+
return preferences.getBoolean(UI_MINIMAL_MODE_KEY, false)
104+
}
105+
94106
fun getDefaultFolderId(): Int {
95107
val preferences = context.getSharedPreferences(UI_PREFERENCE_NAME, Context.MODE_PRIVATE)
96108
return preferences.getInt(DEFAULT_FOLDER_NAME, -1)
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
<vector xmlns:android="http://schemas.android.com/apk/res/android" android:height="25dp" android:viewportHeight="6.35" android:viewportWidth="6.35" android:width="25dp">
2+
3+
<path android:fillColor="#039BE5" android:fillType="nonZero" android:pathData="m3.1758,1.3223c-1.6529,0 -2.8594,1.6953 -2.8594,1.6953a0.2646,0.2646 0,0 0,0 0.3164c0,0 1.2065,1.6934 2.8594,1.6934 1.6529,0 2.8574,-1.6934 2.8574,-1.6934a0.2646,0.2646 0,0 0,0 -0.3164c0,0 -1.2045,-1.6953 -2.8574,-1.6953zM3.1758,1.8516c1.1343,0 2.0644,1.0722 2.2754,1.3242 -0.2112,0.2523 -1.1413,1.3223 -2.2754,1.3223 -1.134,0 -2.064,-1.0698 -2.2754,-1.3223C1.1116,2.9235 2.0416,1.8516 3.1758,1.8516Z" android:strokeColor="#00000000" android:strokeLineCap="round" android:strokeLineJoin="round" android:strokeWidth="0.52916664"/>
4+
5+
<path android:fillColor="#03DAC5" android:fillType="nonZero" android:pathData="m3.1758,2.1172c-0.5814,0 -1.0586,0.4772 -1.0586,1.0586 0,0.5814 0.4772,1.0566 1.0586,1.0566 0.5814,0 1.0566,-0.4753 1.0566,-1.0566 0,-0.5814 -0.4753,-1.0586 -1.0566,-1.0586zM3.1758,2.6465c0.2954,0 0.5293,0.2339 0.5293,0.5293 0,0.2954 -0.2339,0.5293 -0.5293,0.5293 -0.2954,0 -0.5293,-0.2339 -0.5293,-0.5293 0,-0.2954 0.2339,-0.5293 0.5293,-0.5293z" android:strokeColor="#00000000" android:strokeLineCap="round" android:strokeLineJoin="round" android:strokeWidth="0.52916664"/>
6+
7+
</vector>

0 commit comments

Comments
 (0)