forked from nextcloud/android
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathPreviewTextStringFragment.java
More file actions
152 lines (124 loc) · 5.1 KB
/
PreviewTextStringFragment.java
File metadata and controls
152 lines (124 loc) · 5.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
/*
* Nextcloud - Android Client
*
* SPDX-FileCopyrightText: 2019 Tobias Kaminsky <tobias@kaminsky.me>
* SPDX-FileCopyrightText: 2019 Nextcloud GmbH
* SPDX-License-Identifier: AGPL-3.0-or-later OR GPL-2.0-only
*/
package com.owncloud.android.ui.preview;
import android.os.Bundle;
import android.os.Handler;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
import com.nextcloud.android.lib.richWorkspace.RichWorkspaceDirectEditingRemoteOperation;
import com.nextcloud.utils.extensions.FileExtensionsKt;
import com.nmc.android.utils.FabThemeUtils;
import com.owncloud.android.R;
import com.owncloud.android.lib.common.operations.RemoteOperationResult;
import com.owncloud.android.ui.activity.FileDisplayActivity;
import com.owncloud.android.utils.DisplayUtils;
import androidx.annotation.NonNull;
import androidx.appcompat.widget.SearchView;
import androidx.core.view.MenuItemCompat;
public class PreviewTextStringFragment extends PreviewTextFragment {
private static final String EXTRA_FILE = "FILE";
private final static String TAG = "PreviewTextStringFragment";
private boolean isEditorWebviewLaunched = false;
/**
* Creates an empty fragment for previews.
*/
public PreviewTextStringFragment() {
super();
}
/**
* {@inheritDoc}
*/
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
Bundle args = getArguments();
if (args.containsKey(FileDisplayActivity.EXTRA_SEARCH_QUERY)) {
searchQuery = args.getString(FileDisplayActivity.EXTRA_SEARCH_QUERY);
}
searchOpen = args.getBoolean(FileDisplayActivity.EXTRA_SEARCH, false);
handler = new Handler();
}
/**
* {@inheritDoc}
*/
@Override
public void onSaveInstanceState(@NonNull Bundle outState) {
FileExtensionsKt.logFileSize(getFile(), TAG);
outState.putParcelable(PreviewTextStringFragment.EXTRA_FILE, getFile());
super.onSaveInstanceState(outState);
}
@Override
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = super.onCreateView(inflater, container, savedInstanceState);
if (view == null) {
throw new RuntimeException("View may not be null");
}
FloatingActionButton fabMain = requireActivity().findViewById(R.id.fab_main);
fabMain.setVisibility(View.VISIBLE);
fabMain.setEnabled(true);
fabMain.setOnClickListener(v -> edit());
fabMain.setImageResource(R.drawable.ic_edit);
//NMC customization
FabThemeUtils.colorFloatingActionButton(requireActivity(), fabMain);
return view;
}
@Override
public void onStart() {
if (isEditorWebviewLaunched && containerActivity instanceof FileDisplayActivity fileDisplayActivity) {
fileDisplayActivity.getSupportFragmentManager().popBackStack();
fileDisplayActivity.onRefresh();
}
super.onStart();
}
/**
* {@inheritDoc}
*/
@Override
public void onCreateOptionsMenu(@NonNull Menu menu, @NonNull MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
MenuItem menuItem = menu.findItem(R.id.action_search);
menuItem.setVisible(true);
searchView = (SearchView) MenuItemCompat.getActionView(menuItem);
searchView.setOnQueryTextListener(this);
searchView.setMaxWidth(Integer.MAX_VALUE);
viewThemeUtils.androidx.themeToolbarSearchView(searchView);
if (searchOpen) {
searchView.setIconified(false);
searchView.setQuery(searchQuery, true);
searchView.clearFocus();
}
}
public void loadAndShowTextPreview() {
originalText = getFile().getRichWorkspace();
setText(binding.textPreview, originalText, getFile(), requireActivity(), true, false, viewThemeUtils);
binding.textPreview.setVisibility(View.VISIBLE);
binding.emptyListProgress.setVisibility(View.GONE);
}
private void edit() {
new Thread(() -> {
RemoteOperationResult result = new RichWorkspaceDirectEditingRemoteOperation(getFile().getRemotePath())
.execute(accountManager.getUser(), getContext());
if (result.isSuccess()) {
String url = (String) result.getSingleData();
containerActivity.getFileOperationsHelper().openRichWorkspaceWithTextEditor(getFile(),
url,
getContext());
isEditorWebviewLaunched = true;
} else {
DisplayUtils.showSnackMessage(getView(), "Error");
}
}).start();
}
// TODO on close clean search query
}