mirror of
https://github.com/Xevion/paperless-mobile.git
synced 2025-12-10 00:07:54 -06:00
Changed loading animation, directly accessible pages and updated translations
This commit is contained in:
@@ -47,7 +47,7 @@ class DocumentSearchDelegate extends m3.SearchDelegate<DocumentModel> {
|
||||
slivers: [
|
||||
SliverToBoxAdapter(
|
||||
child: Text(
|
||||
"History", //TODO: INTL
|
||||
S.of(context).documentSearchHistory,
|
||||
style: Theme.of(context).textTheme.labelMedium,
|
||||
).padded(16),
|
||||
),
|
||||
@@ -111,7 +111,7 @@ class DocumentSearchDelegate extends m3.SearchDelegate<DocumentModel> {
|
||||
slivers: [
|
||||
SliverToBoxAdapter(
|
||||
child: Text(
|
||||
"Results", //TODO: INTL
|
||||
S.of(context).documentSearchResults,
|
||||
style: Theme.of(context).textTheme.labelMedium,
|
||||
).padded(),
|
||||
),
|
||||
|
||||
@@ -4,8 +4,8 @@ import 'package:paperless_mobile/features/document_search/cubit/document_search_
|
||||
import 'package:paperless_mobile/features/document_search/document_search_delegate.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
class DocumentSearchAppBar extends StatelessWidget {
|
||||
const DocumentSearchAppBar({
|
||||
class DocumentSearchBar extends StatelessWidget {
|
||||
const DocumentSearchBar({
|
||||
super.key,
|
||||
});
|
||||
|
||||
@@ -34,7 +34,7 @@ class DocumentSearchAppBar extends StatelessWidget {
|
||||
borderSide: BorderSide.none,
|
||||
),
|
||||
prefixIcon: IconButton(
|
||||
icon: const Icon(Icons.menu),
|
||||
icon: const Icon(Icons.search),
|
||||
onPressed: () {
|
||||
Scaffold.of(context).openDrawer();
|
||||
},
|
||||
@@ -11,7 +11,7 @@ import 'package:paperless_mobile/features/document_details/bloc/document_details
|
||||
import 'package:paperless_mobile/features/document_details/view/pages/document_details_page.dart';
|
||||
import 'package:paperless_mobile/features/document_search/cubit/document_search_cubit.dart';
|
||||
import 'package:paperless_mobile/features/document_search/document_search_delegate.dart';
|
||||
import 'package:paperless_mobile/features/document_search/view/document_search_app_bar.dart';
|
||||
import 'package:paperless_mobile/features/document_search/view/document_search_bar.dart';
|
||||
import 'package:paperless_mobile/features/documents/bloc/documents_cubit.dart';
|
||||
import 'package:paperless_mobile/features/documents/bloc/documents_state.dart';
|
||||
import 'package:paperless_mobile/features/documents/view/widgets/documents_empty_state.dart';
|
||||
@@ -30,6 +30,7 @@ import 'package:paperless_mobile/features/settings/bloc/application_settings_sta
|
||||
import 'package:paperless_mobile/features/settings/model/view_type.dart';
|
||||
import 'package:paperless_mobile/features/tasks/cubit/task_status_cubit.dart';
|
||||
import 'package:paperless_mobile/generated/l10n.dart';
|
||||
import 'package:paperless_mobile/helpers/format_helpers.dart';
|
||||
import 'package:paperless_mobile/helpers/message_helpers.dart';
|
||||
import 'package:paperless_mobile/constants.dart';
|
||||
|
||||
@@ -152,9 +153,24 @@ class _DocumentsPageState extends State<DocumentsPage> {
|
||||
builder: (context, state) {
|
||||
if (state.selection.isEmpty) {
|
||||
return AppBar(
|
||||
automaticallyImplyLeading: false,
|
||||
title: const DocumentSearchAppBar(),
|
||||
automaticallyImplyLeading: true,
|
||||
title: Text(S.of(context).documentsPageTitle +
|
||||
" (${formatMaxCount(state.documents.length)})"),
|
||||
actions: [
|
||||
IconButton(
|
||||
icon: const Icon(Icons.search),
|
||||
onPressed: () {
|
||||
showMaterial3Search(
|
||||
context: context,
|
||||
delegate: DocumentSearchDelegate(
|
||||
DocumentSearchCubit(context.read()),
|
||||
searchFieldStyle:
|
||||
Theme.of(context).textTheme.bodyLarge,
|
||||
hintText: "Search documents",
|
||||
),
|
||||
);
|
||||
},
|
||||
),
|
||||
const SortDocumentsButton(),
|
||||
BlocBuilder<ApplicationSettingsCubit,
|
||||
ApplicationSettingsState>(
|
||||
|
||||
@@ -7,12 +7,12 @@ import 'package:paperless_mobile/features/documents/view/widgets/list/document_l
|
||||
import 'package:paperless_mobile/features/settings/model/view_type.dart';
|
||||
|
||||
class AdaptiveDocumentsView extends StatelessWidget {
|
||||
final DocumentsState state;
|
||||
final ViewType viewType;
|
||||
final Widget beforeItems;
|
||||
final void Function(DocumentModel) onTap;
|
||||
final void Function(DocumentModel) onSelected;
|
||||
final ScrollController scrollController;
|
||||
final DocumentsState state;
|
||||
final bool hasInternetConnection;
|
||||
final bool isLabelClickable;
|
||||
final void Function(int id)? onTagSelected;
|
||||
@@ -46,6 +46,8 @@ class AdaptiveDocumentsView extends StatelessWidget {
|
||||
slivers: [
|
||||
SliverToBoxAdapter(child: beforeItems),
|
||||
if (viewType == ViewType.list) _buildListView() else _buildGridView(),
|
||||
if (state.hasLoaded && state.isLoading)
|
||||
SliverToBoxAdapter(child: pageLoadingWidget),
|
||||
],
|
||||
);
|
||||
}
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:paperless_mobile/extensions/flutter_extensions.dart';
|
||||
|
||||
class NewItemsLoadingWidget extends StatelessWidget {
|
||||
const NewItemsLoadingWidget({super.key});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return const CircularProgressIndicator();
|
||||
return Center(child: const CircularProgressIndicator().padded());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -182,14 +182,14 @@ class _HomePageState extends State<HomePage> {
|
||||
),
|
||||
label: S.of(context).bottomNavInboxPageLabel,
|
||||
),
|
||||
RouteDescription(
|
||||
icon: const Icon(Icons.settings_outlined),
|
||||
selectedIcon: Icon(
|
||||
Icons.settings,
|
||||
color: Theme.of(context).colorScheme.primary,
|
||||
),
|
||||
label: S.of(context).appDrawerSettingsLabel,
|
||||
),
|
||||
// RouteDescription(
|
||||
// icon: const Icon(Icons.settings_outlined),
|
||||
// selectedIcon: Icon(
|
||||
// Icons.settings,
|
||||
// color: Theme.of(context).colorScheme.primary,
|
||||
// ),
|
||||
// label: S.of(context).appDrawerSettingsLabel,
|
||||
// ),
|
||||
];
|
||||
final routes = <Widget>[
|
||||
MultiBlocProvider(
|
||||
@@ -222,7 +222,7 @@ class _HomePageState extends State<HomePage> {
|
||||
),
|
||||
child: const InboxPage(),
|
||||
),
|
||||
const SettingsPage(),
|
||||
// const SettingsPage(),
|
||||
];
|
||||
return MultiBlocListener(
|
||||
listeners: [
|
||||
@@ -270,7 +270,7 @@ class _HomePageState extends State<HomePage> {
|
||||
}
|
||||
return Scaffold(
|
||||
bottomNavigationBar: NavigationBar(
|
||||
labelBehavior: NavigationDestinationLabelBehavior.alwaysHide,
|
||||
labelBehavior: NavigationDestinationLabelBehavior.alwaysShow,
|
||||
elevation: 4.0,
|
||||
selectedIndex: _currentIndex,
|
||||
onDestinationSelected: _onNavigationChanged,
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
import 'package:collection/collection.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||
import 'package:intl/date_symbol_data_local.dart';
|
||||
import 'package:intl/intl.dart';
|
||||
import 'package:paperless_api/paperless_api.dart';
|
||||
import 'package:paperless_mobile/core/widgets/documents_list_loading_widget.dart';
|
||||
@@ -14,7 +13,6 @@ import 'package:paperless_mobile/features/inbox/view/widgets/inbox_empty_widget.
|
||||
import 'package:paperless_mobile/features/inbox/view/widgets/inbox_item.dart';
|
||||
import 'package:paperless_mobile/generated/l10n.dart';
|
||||
import 'package:paperless_mobile/helpers/message_helpers.dart';
|
||||
import 'package:paperless_mobile/constants.dart';
|
||||
|
||||
class InboxPage extends StatefulWidget {
|
||||
const InboxPage({super.key});
|
||||
@@ -65,10 +63,6 @@ class _InboxPageState extends State<InboxPage> {
|
||||
builder: (context, state) {
|
||||
return AppBar(
|
||||
title: Text(S.of(context).bottomNavInboxPageLabel),
|
||||
leading: IconButton(
|
||||
icon: const Icon(Icons.close),
|
||||
onPressed: () => Navigator.pop(context),
|
||||
),
|
||||
actions: [
|
||||
if (state.hasLoaded)
|
||||
Align(
|
||||
@@ -89,12 +83,6 @@ class _InboxPageState extends State<InboxPage> {
|
||||
),
|
||||
).paddedSymmetrically(horizontal: 8)
|
||||
],
|
||||
bottom: PreferredSize(
|
||||
preferredSize: const Size.fromHeight(4),
|
||||
child: state.isLoading && state.hasLoaded
|
||||
? const LinearProgressIndicator()
|
||||
: const SizedBox(height: _progressBarHeight),
|
||||
),
|
||||
);
|
||||
},
|
||||
),
|
||||
|
||||
Reference in New Issue
Block a user